package com.zhz.leetcode.learn;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 队列学习，使用java自带api
 * 1、创建队列
 * 2、添加元素
 * 3、获取即将出队的元素
 * 4、删除即将出队的元素
 * 5、判断队列是否为空
 * 6、队列长度
 * 7、遍历操作（边删除边遍历队列的操作）
 */
public class QueueLearn {

    public static void main(String[] args) {
        QueueLearn mQueueLearn = new QueueLearn();

        //1、创建queue
        Queue<String> queue = mQueueLearn.createQueue();

        //2、添加元素
        queue.add("zhuang");
        queue.add("hong");
        queue.add("zhan");
        System.out.println("队列元素: " + queue);

        //3、获取即将出队的元素
        String first = queue.peek();
        System.out.println("即将出队的元素: " + first);
        System.out.println("队列元素: " + queue);

        //4、删除即将出队的元素 即将队列头部元素移出队列
        String first1 = queue.poll();
        System.out.println("删除即将出队的元素: " + first1);
        System.out.println("删除后剩下的队列元素: " + queue);

        //5、判断队列是否为空
        System.out.println(queue.isEmpty() ? "队列为空" : "队列不为空");

        //6、队列长度，
        System.out.println("当前队列的长度是: " + queue.size());

        //7、遍历操作（边删除边遍历队列的操作）
        for (String s : queue) {
            System.out.println("队列元素: " + s);
        }
    }

    /**
     * 创建队列
     * 由于Queue是一个接口，LinkedList实现了Queue接口，因此我们可以把LinkedList当作queue来使用
     */
    private Queue<String> createQueue() {
        return new LinkedList<>();
    }

}
